//
//  main.c
//  2222
//
//  Created by 顿耀伍 on 2019/10/14.
//  Copyright © 2019 顿耀伍. All rights reserved.
//

#include<stdio.h>
#include<assert.h>
//连续子数组的最大和
int MaxNum2(int *arr,int len)
{
    assert(arr != NULL && len > 0);
    int max = 0x80000000;//0x8000 0000是十六进制的最小值
    int sum = 0;
    for(int i = 0; i < len;i++)
    {
        if(sum <= 0)
        {
            sum = arr[i];//当sum<=0时，将第i个指向值给sum
        }
        else
        {
            sum += arr[i];//否则sum+下个指向值
        }

        if(sum > max)//当此sum比上个sum大时，赋值给max
        {
            max = sum;
        }
    }
    return max;
}

int main()
{
    int arr[10] = {1,2,-3,5};
    int len = sizeof(arr)/sizeof(arr[0]);
    int max = MaxNum2(arr,len);
    printf("%d\n",max);
    getchar();
    return 0;
}
